工具推荐 | 串口数据可视化
. 1. 推荐语
数据可视化一词缘于Python的流行,在Python中有诸如pyecharts,matplotlib等工具库可以调用,将一堆数据绘制成形象的图表,比如条形图,饼图等等,可以一眼就看出数据的变化趋势。
在嵌入式开发过程中,也有大量的传感器数据需要分析,这些数据在调试过程中都是由串口发送到串口助手查看,可是,面对串口助手里一行行的数据,真的可以分析出问题吗?
串口发送的数据都是以时间点为单位的,即每个时间点发送一个数据,这样的数据,如何做到可视化?显然,波形显示是最好的方式!
本文中推荐的工具是作者一直使用的,由 VCAN 我行科技开发的一款多功能串口助手,这里只介绍其中的虚拟示波器功能用法及使用案例,该工具获取方式见文末。
虚拟示波器功能界面如下:
该波形显示工具的优势如下:
支持多达8个通道
通道数据类型可选
通道名称可修改
通道可隐藏
可鼠标控制界面缩放和移动
可自动追踪数据
可快速把Y轴归零
这么好用的工具,如何使用呢?接下来慢慢讲述。
. 2. 工具用法
使用该工具时,首先在工具中打开对应下位机的串口,并设置好波特率,然后对应的下位机(嵌入式系统)只需要按照规定的格式发送数据即可,一次数据传输的通信协议的格式为:
[0x03] [0xFC][…数据…][0xFC][0x03]
其中[…数据…]
是一次的波形,不同的波形数量和数据类型,数据的长度就不相同。
eg.
假设现在单片机需要发送 5 个通道的数据显示, 都是uint8_t 类型(unsigned char),那么数据就是 5 个字节,从左往右是波形 1 到波形 5 的波形数据,单片机发送一次数据的流程如下:
先发送帧头:
0x03,0xFC
接着发送全部波形的数据(5个字节)
最后发送帧尾:
0xFC,0x03
这样就完成一次波形数据发送,可以在波形显示工具中看到波形。
. 3. 使用案例 —— 一次ADC采集电压的可视化分析过程
在一次制作数字电压表的过程中,使用STM32自带的ADC采样直流电压并通过串口发送,但是在调节电位器变化ADC所采样的电压时,在串口助手中只有单纯的文字显示,只能看到变化前的电压值和变化后的电压值,在变化的这个阶段根本没法分析,所以就想到了使用该工具进行可视化分析。
根据之前所规定的协议,在发送电压值数据时加入了帧头和帧尾,这样工具里就可以用波形显示出ADC采样情况,果然,在ADC采样电压数据有变化时,波形如下:
数据看似还算平稳,可是这是在0-3.3V整体范围内的情况,再放大一下看看:
这是在+-1V
的范围内,可以看到数据出现了剧烈抖动,如果没有这个工具,这个问题是根本没法诊断出来的,接下来我对ADC采样的数据进行软件滤波,消除电位器引起的脉冲性抖动噪声,软件滤波算法采用递推平均滤波算法,把连续取到的10个采样值看成一个队列,每次采样到一个新的数据放入队尾,并扔掉原来队首的一次数据,将队列中的10个数据进行算术平均运算,获得滤波结果。
加入滤波算法之后再次用波形显示软件观察相同点数据,如图所示,可以看到数据稳定在69.0,变为一条平滑的直线:
最后再观察整个0-5V采样范围内的波形显示,如图所示,波形平滑:
以上就是我使用该工具的一个典型案例,在嵌入式开发中还有很多的地方可以使用该工具可以帮助我们诊断一些细节问题:
在电赛中使用FDC2214测电容值时;
在项目中测量MQ-2气体传感器数据时,使用该工具可针对性的设计算法,避免误报警;
……
说了这么多,还没说该工具如何获得,老规矩:
在公众号『mculover666』回复下面的关键词即可获得安装包:
串口数据可视化
更多精彩文章及资源,欢迎关注我的微信公众号:『mculover666』。